package com.hp.common.token;

import java.util.Map;

public interface TokenStrategy {
    /**
     * 通过用户id和用户名称生成token
     *
     * @param userId   用户id
     * @param userName 用户密码
     * @param map      额外参数
     * @return
     */
    String generateToken(Long userId, String userName, Map<String, Object> map);

    /**
     * 校验token是否合法
     *
     * @param token 临时令牌
     * @return
     */
    boolean verifyToken(String token);

    /**
     * 从来token获取用户id
     *
     * @param token
     * @return
     */
    Long getUserId(String token);

    /**
     * 从token中获取用户名
     *
     * @param token
     * @return
     */
    String getUserName(String token);

    /**
     * 获取额外参数
     *
     * @param token
     * @return
     */
    Map<String, Object> getExt(String token);

    /**
     * 删除token
     *
     * @param token
     * @return
     */
    int removeToken(String token);
}
